选项
选项
文章目录
  1. 智能硬件系统开发之语音通信
    1. 一、设计内容
    2. 二、设计要求
    3. 三、主要仪器设备
    4. 步骤
      1. (一).在嵌入式系统环境下,实现本地语音文件录放(WAV格式)
      2. 1.通过 Socket 网络编程实现 IP 网络双向语音传输
        1. 编写客户端程序
    5. 五、总结

智能硬件系统开发之语音通信

智能硬件系统开发之语音通信

题目 智能硬件系统开发之语音通信
主要内容 学习和掌握构建基于嵌入式硬件平台和嵌入式 Linux 软件开发环境的方法,掌握嵌入式音频应用程序设计与开发手段,在此基础上通过 Socket网络编程实现基于嵌入式 IP 网络的双向语音通信。
设计要求 基本要求: 1、在嵌入式系统环境下,实现本地语音文件录放(WAV格式); 2、通过 Socket 网络编程实现 IP 网络双向语音传输。 扩展要求:通过调用百度、科大讯飞等语音识别库实现简单命令词识别功能,实现语音数据的压缩编码,G.711、G.729等格式均可。也可以自行设计其它扩展功能。
主要仪器设备 1、嵌入式开发系统 1 套;2、计算机 1 台,安装Ubuntu操作系统及 arm-linux 交叉编译工具;3、耳麦 1 个;4、网线 2 根,IP 地址 2 个

一、设计内容

学习和掌握构建基于嵌入式硬件平台和嵌入式 Linux 软件开发环境的方法,掌握嵌入式音频应用程序设计与开发手段,在此基础上通过 Socket网络编程实现基于嵌入式 IP 网络的双向语音通信。

二、设计要求

1、基本要求

(1)在嵌入式系统环境下,实现本地语音文件录放(WAV格式);

(2)通过 Socket 网络编程实现 IP 网络双向语音传输。

2、扩展要求

通过调用百度、科大讯飞等语音识别库实现简单命令词识别功能,实现语音数据的压缩编码。也可以自行设计其它扩展功能。

三、主要仪器设备

1、嵌入式开发系统 1 套
2、计算机 1 台,安装Ubuntu操作系统及 arm-linux 交叉编译工具
3、耳麦 1 个
4、网线 2 根,IP 地址 2 个

步骤

(一).在嵌入式系统环境下,实现本地语音文件录放(WAV格式)

(1)向arm开发板移植ALSA库

1.下载库文件与工具

alsa-lib-1.0.23.tar.bz2

alsa-utils-1.0.23.tar.bz2

将文件移到Ubuntu上

解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录

2.使用命令

./configure –host=arm-none-linux-gnueabi –prefix=/opt/arm-alsa

–host参数指定了交叉编译器为"arm-none-linux-gnueabi、",

–prefix参数指定了alsa-lib的目标安装目录

3.使用命令

make

sudo make install

安装库

4.解压alsa-utils-1.0.23.tar.bz2,进入解压所得目录

5.使用命令

./configure –host=arm-none-linux-gnueabi –prefix=/opt/arm-alsa –with-alsa-inc-prefix=/opt/arm-alsa/include –with-alsa-prefix=/opt/arm-alsa/lib

–disable-alsamixer –disable-xmlto

其中–with-alsa-inc-prefix和–with-alsa-prefix分别指定了交叉编译util应用所需要的alsa-lib的头文件和库文件;

–disable-alsamixer表示不编译生成alsamixer这个应用程序,

6.使用命令

touch alsaconf/po/t-ja.gmo

touch alsaconf/po/t-ru.gmo

7.使用命令

make

sudo make install

安装完后进入安装目录可看到以下文件

1

将该目录全部拷贝到/source/rootfs下,移植ALSA库完成。

(2)编辑语音录制与播放程序

一个典型的音频程序应该具有以下结构:打开音频设备、为设备设置读写参数、向音频设备读/写音频数据、关闭设备。Alsa库为我们实现这些操作提供了丰富的接口。

播放程序代码如下:



录制音频程序如下



(3)交叉编译

使用交叉编译工具编译程序

将可执行文件移动到开发板目录下

(4)运行程序

在putty窗口中分别运行音频录制与播放程序

1.通过 Socket 网络编程实现 IP 网络双向语音传输

socket通信其实是有两种方式:TCP和UDP过程。

基于TCP的socket通信服务端的具体步骤:(1)创建ServerSocket对象,绑定监听端口。(2)通过accept()方法监听客户端请求(3)连接建立后,通过输入流读取客户端的数据(4)通过输出流,向客户端回应信息

基于TCP的socket通信客户端的步骤:(1)创建Socket并指定端口(2)通过输出流向服务端发送一个请求(3)等待服务端的回应 获取输入流,读取客户端信息(将字节流转化为字符流),并保存在缓冲区中(4)关闭资源

  1. 编写服务端** 程序**


编写客户端程序


  1. 编译

编译服务端程序,将客户端程序进行交叉编译后移植到开发板上

4.** 运行程序**

查看IP

打开服务器

在开发板中运行客户端,ip地址为服务器地址

程序执行,客户端向服务器发送音频数据。之后可以看到服务器端收到了音频数据,并保存到本地。

五、总结

在嵌入式系统环境下,实现本地语音文件录放,通过 Socket 网络编程实现 IP 网络双向语音传输。本地语音文件录放的实现首先是先将alsa库通过交叉编译后移植到开发板上,接着通过调用alsa库的函数来实现录制与播放声音程序的编写,程序编写完后,通过交叉编译生成在开发板上的可执行文件。IP 网络双向语音传输实现是通过socket编程将录制的音频数据通过网络传输给对方,将数据保存后即可播放。

END
???????